Some computer programs are designed in a manner such that the core functionality offered by those “base” computer programs can be extended through interaction with one or more optional “add-on” programs. Implementing optional functionality in add-on programs rather than in a base program provides many benefits. If a user needs the functionality offered by some add-on programs but not other add-on programs, then the user can install only those add-on programs that implement the functionality that the user needs. Add-on developers often can develop add-on programs for an existing base program at less cost and in less time than if those add-on developers had to develop a complete stand-alone program from scratch.
Furthermore, when optional functionality is implemented in an add-on program, that functionality often can be enhanced through a new version of the add-on program. The new version of the add-on program can replace the old version of the add-on program without modifying the base program or any other add-on programs. The old version of the add-on program may be uninstalled, and the new version of the program may be installed in its place.
Sometimes, both a base program and an add-on program store data in a database. The add-on program may store the add-on program's data in the same database in which the base program's data is stored. All of the data in the database is structured according to a format that a particular version of a database server program understands. The base program and the add-on program access their respective data through the database server program, which may be embedded within the base program itself.
When a new version of a base program becomes available, the new version of the base program may contain features that were not available in the old version of the base program. Some of the features in the new version of the base program may require the use of functionality that is not implemented in a currently installed version of the database server program. Consequently, the uninstallation of an old version of a base program and the installation of a new version of the base program often involves the uninstallation of a database server program embedded within the old version of the base program and the installation of a database server program embedded within the new version of the base program.
When a database server program is uninstalled, data contained in the corresponding database typically needs to be migrated. Data migration typically involves the exporting of data from the database prior to the uninstallation of the database server program followed by the importing of the exported data into the database after the re-installation of the same or newer version of the database server program.
Theoretically, each add-on program could contain separate code for migrating that add-on program's data. However, developers of add-on programs might not have enough familiarity with the database server program to generate such code. If a particular add-on program's migration code contained errors, then data in the database might become lost or corrupted.
Each add-on program might store a very large amount of data in the database. When applied to a large amount of data, some conventional approaches to migrating data take a very long time.